/** @jsxImportSource @emotion/react */
import * as React from "react";
import {
    Text, BlobInputList, InputLine, InputDatalist,
} from "customize-easy-ui-component";
import {
    InspectRecordLayout, InternalItemProps,  useItemInputControl,
} from "../../common/base";
import {useMeasureInpFilter} from "../../common/hooks";
import {usePrefixDataEdit} from "../../hook/usePrefixData";
import {EditStorageContext} from "../../StorageContext";
import {render容积换热, view容积} from "./orcBase";

interface Props  extends InternalItemProps{
    label?: string;
    titles?: any[];
    //不考虑两个类型都兼容，加？  | any[]
    config?: ( (verId:string,orc:any)=>any[] )  | any[];
    // config?: any[];
}

export const config资料审查 =(verId:string,orc?:any)=>
[
    [['设计单位', '_$设计单位'],  ],
    [['产品标准', '_$产品标准'], ['设计日期', '_$设计日期'], ],
    [['容器图号', '_$设计图号'], ['设计使用年限', '_$设计年限', '年'], ],
    [['制造单位', '_$制造单位'],  ],
    [['制造日期', '_$制造日期'],  ['产品编号', '_$出厂编号'] ],
    [['安装单位', '_$安装单位'], ],
    [['投入使用日期', '_$投用日期'], ['上次检验日期', {n:'上次定检日期',t:'d'},], ],
    [['设备代码','_$设备代码'], ['使用登记证编号', '_$使用证号'],  ],
    [[{pr:'结构型式', span:2, t:'主体结构型式'}, '_$主体结构'], ['安装型式', '_$安装型式'] ],
    [[{t:'支座型式'}, '_$支座型式'], ['保温绝热方式', '_$保温绝热方式'] ],
    //【拆分点】上下两个生成的Table的列数相差1列；
    //orc.是换热? '换热面积':'容积'}
    //必须改成对象{}的desc方式；不能直接上view容积；
    [[{t:'容积', view:view容积}, '_$容积换热',  render容积换热], ['容器内径', '_$内径','mm'],  ],
    //允许充装量 =  (pa?.充重);  //.充重(Tool.castFloat(pms.getLoadweight()))
    [['高/长', '_$外形高长','mm'], ['最大充许充装量', {n:'_$允许充装量',u:'kg'},] ],
    [[{pr:'设计压力', span:2, t:'壳体（壳程）'}, '_$壳程设计压力', 'MPa'],   [{pr:'使用压力', span:2, t:'壳体（壳程）'}, '_$壳程使用压力' , 'MPa'] ],
    [[{t:'夹套（管程）'}, '_$管程设计压力', 'MPa'],   [{t:'夹套（管程）'}, '_$管程使用压力' , 'MPa'] ],
    [[{pr:'设计温度', span:2, t:'壳体（壳程）'}, '_$壳程设计温度', '℃'],   [{pr:'使用温度', span:2, t:'壳体（壳程）'}, '_$壳程使用温度' , '℃'] ],
    [[{t:'夹套（管程）'}, '_$管程设计温度', '℃'],   [{t:'夹套（管程）'}, '_$管程使用温度' , '℃'] ],
    // [[{pr:'腐蚀裕度（mm）', span:2, t:'筒体',prview: view腐蚀}, '_$筒体腐裕度'], [{pr:'介质', span:2, t:'壳体（壳程）'}, '_$壳程介质'] ],
    [[{pr:'腐蚀裕量', span:2, t:'筒体'}, '_$筒体腐裕度', 'mm'],   [{pr:'介质', span:2, t:'壳体（壳程）'}, '_$壳程介质'] ],
    [[{t:'封头'}, '_$封头腐裕度', 'mm'],   [{t:'夹套（管程）'}, '_$管程介质'] ],
    // [['腐蚀裕量', '_$腐蚀裕量', 'mm'], ['介质', '_$工作介质',],  ],
    // [['设计压力', '_$设计压力', 'MPa'], ['设计温度',{n:'设计温', u:'℃'}]  ],
    [[{pr:'材质', span:4, t:'筒体'}, '_$筒体材质'],   [{pr:'厚度', span:4, t:'筒体'}, '_$筒体厚度' ,'mm'] ],
    [[{t:'封头'}, '_$封头材质'],   [{t:'封头'}, '_$封头厚度' ,'mm'] ],
    [[{t:'夹套（换热管）'}, '_$夹套材质'], [{t:'夹套（换热管）'}, '_$夹套厚度','mm'] ],
    [[{t:'衬里'}, '_$衬里材质'], [{t:'衬里'}, '_$衬里厚度','mm'] ],
];
/**资料审查主体  config={config资料审查}
 * */
export const MaterialReview=
React.forwardRef((
    { children, show ,alone=true,verId,redId,nestMd,label,config}:Props,  ref
) => {
    const {storage, setStorage} =React.useContext(EditStorageContext) as any;
    const {inp, setInp} = useItemInputControl({ref});
    const newconfig = React.useMemo(() => {
        return (typeof config ==='function'? config(verId!,storage) : config);
    }, [config,verId,storage]);
    //【重大】毛病啊config: 动态的就导致：死循环依赖热 【最后】接了一个useMemo包裹呢 @还不能用inp替换storage来做的。
    const [renderEditline, itemA审查概况] = usePrefixDataEdit({
        inp, setInp, config: newconfig! });
    const [getInpFilter] = useMeasureInpFilter(null, itemA审查概况,);
    return <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show} redId={redId}
                                nestMd={nestMd} alone={alone} label={label!}>
        <Text variant="h5">{label}：</Text>
        资料审查设备概况除在台账业务信息中可修改外还需修改的部分:
        {renderEditline}
        { children }
    </InspectRecordLayout>;
});

export const 等级评定选=['1级','2级','3级','4级','5级'];
export const itemA上次问题: string[]=['资料审查','上次缺处','上次评级'];
export const PreviousQuestion=
    React.forwardRef((
        { children, show ,alone=true,redId,nestMd,label,titles}:Props,  ref
    ) => {
        const [getInpFilter]=useMeasureInpFilter(null,itemA上次问题,);
        const {inp, setInp} = useItemInputControl({ ref });
        return <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show} redId={redId}
                                    nestMd={nestMd} alone={alone} label={label!}>
            <Text variant="h5">{label}：</Text>
            资料审查情况：
            <BlobInputList value={inp?.资料审查 || ''} rows={6} datalist={['资料基本齐全。']}
                           onListChange={v => setInp({...inp, 资料审查: v || undefined})}/>
            <InputLine  label='上次定期检验安全状况等级评为' >
                <InputDatalist value={inp?.上次评级 ||''} datalist={等级评定选}
                               onListChange={v =>setInp({...inp, 上次评级: v||undefined} ) } />
            </InputLine>
            上次定期检验问题记载：
            <BlobInputList value={inp?.上次缺处 || ''} rows={6} datalist={['上次年度检验报告编号：  ， 检验机构： 特种设备检测研究院。']}
                           placeholder="注明上次定期检验报告编号，检验发现的缺陷及处理情况"
                           onListChange={v => setInp({...inp, 上次缺处: v || undefined})}/>
        </InspectRecordLayout>;
    });
